允許處理非同步的操作,像是網絡請求、事件處理和計時器,建立更加響應性和效能的網頁應用程序並提高用戶體驗。
來介紹異步編程的基本概念、回調函數和Promise吧!
JS一次只能執行一個任務的單線程(single-threaded)語言,如果要處理長時間運行的任務
像是下載大文件或等待使用者輸入東西時,若阻止主線程會導致網頁凍結讓用戶體驗不佳,所以就有了異步編程。
JS中處理異步操作的常見方式,可以將它們作為參數傳遞給其他函數並在異步操作完成後調用。
範例:fetchData
函數模擬異步操作(例如網絡請求),當操作完成時調用傳遞給它的回調函數 displayData
並傳遞數據。
function fetchData(callback) {
// 模擬網絡請求
setTimeout(function () {
const data = '這是從伺服器獲取的數據';
callback(data);
}, 1000); // 模擬1秒的延遲
}
function displayData(data) {
console.log(data);
}
fetchData(displayData);
是一個容易管理的異步編程概念。表示一個異步操作的最終完成(或失敗)並提供了更多控制異步流程的選項。
例如:fetchData
返回一個Promise
對象,代表了異步操作的結果。
使用 .then
方法來處理成功的情況並使用 .catch
方法來處理錯誤的情況。
function fetchData() {
return new Promise(function (resolve, reject) {
// 模擬網絡請求
setTimeout(function () {
const data = '這是從伺服器獲取的數據';
resolve(data); // 操作成功
// 或者使用 reject(data) 表示操作失敗
}, 1000); // 模擬1秒的延遲
});
}
fetchData()
//處理成功的情況
.then(function (data) {
console.log(data);
})
//處理錯誤的情況
.catch(function (error) {
console.error(error);
});
今天介紹到這邊,感謝觀看!